package com.zzx.boot.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.ParameterBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.service.Parameter;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.ArrayList;
import java.util.List;

/**
 * @author 周子贤
 * @version 1.0
 * @date 2022/12/20 20:55
 */
@Configuration
@EnableSwagger2
public class SwaggerConfig {


    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("百科")
                .description("练习")
                .termsOfServiceUrl("")
                .version("1.0").build();
    }

    public List<Parameter> getParameterList() {
        ParameterBuilder token = new ParameterBuilder();
        List<Parameter> params = new ArrayList<>();
        token.name("authorization")											//这个是请求头的名字，
                .description("令牌")				 				//在文档中的中文描述
                .modelRef(new ModelRef("string"))
                .parameterType("header")						//这个参数的类型
                .required(false)									 //是否必填
                .build();
        params.add(token.build());
        return params;
    }


    @Bean
    public Docket docket(){

        Docket docket = new Docket(DocumentationType.SWAGGER_2);
        //ApiInfo 就是API帮助文档的描述信息。 information
//        ApiInfo apiInfo =
//                new ApiInfoBuilder()
//                        .contact(   //配置swagger文档主题内容。
//                                new Contact(
//                                        "Swagger开发文档", //是文档的发布者名称
//                                        "http://www.baidu.com", //是文档发布者的网站地址。企业网站
//                                        "123@qq.com")  //文档发布者的电子邮箱
//                        )
//                        .title("Swagger框架学习帮助文档")
//                        .description("Swagger框架学习帮助文档详细描述-Swagger框架是一个用于开发RestAPI帮助文档的框架")
//                        .version("1.1")
//                        .build();
        ApiInfo apiInfo = apiInfo();
        //给docket上下文配置api描述信息
        docket.apiInfo(apiInfo).globalOperationParameters(getParameterList());

        return docket;
    }





}